package ewa

import (
	"fmt"
)

/*
	去掉字符串两端所有指定的字符
 */

func Strip(s_ string, chars_ string) string {
	s , chars := []rune(s_) , []rune(chars_)
	length := len(s)
	max := len(s) - 1
	l, r := true, true //标记当左端或者右端找到正常字符后就停止继续寻找
	start, end := 0, max
	tmpEnd := 0
	charset := make(map[rune]bool) //创建字符集，也就是唯一的字符，方便后面判断是否存在
	for i := 0; i < len(chars); i++ {
		charset[chars[i]] = true
	}
	for i := 0; i < length; i++ {
		if _, exist := charset[s[i]]; l && !exist {
			start = i
			l = false
		}
		tmpEnd = max - i
		if _, exist := charset[s[tmpEnd]]; r && !exist {
			end = tmpEnd
			r = false
		}
		if !l && !r{
			break
		}
	}
	if l && r {  // 如果左端和右端都没找到正常字符，那么表示该字符串没有正常字符
		return ""
	}
	return string(s[start : end+1])
}

/* 打印字符串数组内容，带换行效果 */
func PrintStringArray(sa []string) {
  for i:=0; i<len(sa); i++ {
    fmt.Printf("%s", sa[i])
    if i != (len(sa) -1) {
      fmt.Printf("|")
    }else{
      fmt.Printf("\n")
    }
  }
}

/* string字符串 规范化：
	去掉字符串两端的空格
 */
func DeletePreAndSufSpace(str string) string {
  strList := []byte(str)
  spaceCount, count := 0, len(strList)
  for i := 0; i <= len(strList)-1; i++ {
    if strList[i] == 32 {
      spaceCount++
    } else {
      break
    }
  }
 
  strList = strList[spaceCount:]
  spaceCount, count = 0, len(strList)
  for i := count - 1; i >= 0; i-- {
    if strList[i] == 32 {
      spaceCount++
    } else {
      break
    }
  }
 
  return string(strList[:count-spaceCount])
}

/* string字符串数组 规范化 */
func ConfigDataNormalize(sa []string) {
  for i:=0; i<len(sa); i++ {
    sa[i] = DeletePreAndSufSpace(sa[i])
  }
}